package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;
import org.springframework.data.mongodb.core.aggregation.ArrayOperators;

import java.util.List;

public interface QuanZiApi {

    /**
     * 发布动态
     *
     * @param publish
     * @return
     */
    String savePublish(Publish publish);


    /**
     * 查询好友动态
     *
     * @param userId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer pageNum, Integer pageSize);


    /**
     * 点赞
     *
     * @param userId    用户id
     * @param publishId 发布id
     * @return
     */
    Boolean saveLikeComment(Long userId, String publishId);

    /**
     * 取消点赞,喜欢
     *
     * @param userId      用户id
     * @param publishId   发布id
     * @param commentType //评论类型
     * @return
     */
    Boolean removeComment(Long userId, String publishId, Integer commentType);


    /**
     * 喜欢
     *
     * @param userId    用户id
     * @param publishId 发布id
     * @return
     */
    Boolean saveLoveComment(Long userId, String publishId);

    /**
     * 保存评论
     *
     * @param userId      用户id
     * @param publishId   发布id
     * @param commentType 评论类型
     * @param content     评论
     * @return
     */
    Boolean saveComment(Long userId, String publishId, Integer commentType, String content);

    /**
     * 查询评论数
     *
     * @param publishId   发布id
     * @param commentType 评论类型
     * @return
     */
    Long queryCommentCount(String publishId, Integer commentType);


    /**
     *  根据id查询单条动态
     * @param publishId
     * @return
     */
    Publish queryPublishById(String publishId);

    /**
     *  查询评论
     * @param publishId 发布id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentList(String publishId, Integer page, Integer pageSize);

    /**
     *  查询用户的评论数据
     * @param userId
     * @param type  评论类型
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentListByUser(Long userId, Integer type, Integer page, Integer pageSize);

    /**
     *  根据pid批量查询数据
     * @param pidList
     * @return
     */
    List<Publish> queryPublishByPids(List<Long> pidList);

    /**
     * 查询自己的相册表 ,别人的动态也都是封装在自己的相册表中
     * @param userId 当前用户的id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryAlbumList(Long userId, Integer page, Integer pageSize );
}